iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 10
0
Software Development

初學者使用youtube影片學習python_純紀錄系列 第 10

Day10_初學者使用youtube影片學習python_純紀錄

  • 分享至 

  • xImage
  •  

參考資料

一樣是彭彭老師的教學影片,以下附上網址:
https://www.youtube.com/watch?v=OOJmhezLd4o&list=PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk&index=10

影片內容

Python 函式參數詳解:參數預設值、名稱對應、任意長度參數 By 彭彭

  1. 參數預設資料
    1.1 定義參數的預設值
    1.2 呼叫函式時,可不給資料,直接使用預設值

  2. 參數名稱對應
    2.1 呼叫函式時,用參數名稱來對應資料

  3. 任意長度的參數
    3.1 定義任意長度的參數
    3.2 使用 Tuple 處理參數
    3.3 呼叫函式時,可給定任意長度的參數資料

學習紀錄

  1. 參數的預設資料

1.1基本語法
def 函式名稱(參數名稱=預設資料)
函示內部的程式碼

1.2程式範例

def say(msg="Hello")   # 參數 msg 預設為"Hello"
    print(msg)
say("Hello Function")  # 正常的運用參數顯示出我們要的資料
say()                  # 顯示出預設資料"Hello"

def power(base,exp=0): # 參數 exp 預設為0
    print(base**exp)   # 輸出 base 的 exp 次方
power(3,2)             # 輸出 3 的 2 次方,會顯示出 9
power(4)               # 輸出 4 的 0 次方,會顯示出 1
  1. 名稱對應
    2.1基本語法
    def 函式名稱(名稱1,名稱2)
    函式內部的程式碼
    函式名稱(名稱2=3,名稱1=5) # 呼叫函示時,可以用參數名稱來對應資料,而不需要按照順序

2.2程式範例

def divide(n1,n2):
    result=n1/n2
    print(result)
divide(2,4)           # 2 放進 n1、4 放進 n2,最後顯示出 0.5
divide(n2=2,n1=4)     # 按照名稱將 2 放進 n2、4 放進 n1,最後則會顯示出 2
  1. 無限/不定 參數資料
    3.1基本語法
    def 函式名稱(*無限參數):
    無限參數以 Tuple 資料形態處理
    函示內部的程式碼
    函式名稱(資料一,資料二,資料三))

3.2程式範例

def say(*msgs):
    for msg in msgs:                 # 以 Tuple 的方式處理並一一顯示出來
        print(msg)
say("Hello","Arbitrary","Arguments") # 呼叫函式,傳入三個參數資料

def avg(*numbers):             # 試著寫出一個計算平均數的函式
    sum=0
    for n in numbers:
        sum=sum+n              # 利用 sum 來將各個數字進行加總
    print(sum/len(numbers))    # 利用 len(numbers) 計算出數字的個數,並用來當分母

avg(3,4)                       # 利用剛剛寫出來的 avg 函式即可迅速地進行運算
avg(3,5,10)
avg(1,4,-1,-8)

個人認為今天的內容其實比昨天的簡單,不過前提是昨天的函式基本運作有搞清楚。在影片中彭彭老師有提到,關於第二點的名稱對應,有些人會傾向於按照順序進行宣告比較不會造成困擾,因此名稱對應的功能其實不一定會需要用到,這個是我之前完全沒有考慮過的事情,可能常常寫 code 的人會比較傾向縮減程式碼,因此按照順序就可以少打一些參數?我自己覺得能進行名稱對應的話會比較方便讓他人觀看,可能有人不希望讓其他人可以改寫之類的原因,甚至要想辦法讓其他人看不懂才好。


上一篇
Day9_初學者使用youtube影片學習python_純紀錄
下一篇
Day11_初學者使用youtube影片學習python_純紀錄
系列文
初學者使用youtube影片學習python_純紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言